import { handle401Error } from './auth';

/**
 * 全局错误处理器
 * 监听未捕获的Promise错误和全局错误
 */
export const setupGlobalErrorHandler = () => {
  // 监听未捕获的Promise错误
  window.addEventListener('unhandledrejection', (event) => {
    console.error('未捕获的Promise错误:', event.reason);
    
    // 检查是否是401错误
    if (event.reason?.response?.status === 401 || event.reason?.message === '未授权') {
      console.log('🔒 检测到未捕获的401错误');
      handle401Error();
      event.preventDefault(); // 阻止默认的错误处理
    }
  });

  // 监听全局JavaScript错误
  window.addEventListener('error', (event) => {
    console.error('全局JavaScript错误:', event.error);
    
    // 检查错误信息中是否包含401相关的内容
    if (event.error?.message?.includes('401') || event.error?.message?.includes('未授权')) {
      console.log('🔒 检测到全局401错误');
      handle401Error();
    }
  });

  console.log('✅ 全局错误处理器已设置');
};

/**
 * 检查响应是否为401错误
 */
export const is401Error = (error: any): boolean => {
  return (
    error?.response?.status === 401 ||
    error?.code === '401' ||
    error?.code === 401 ||
    error?.message === '未授权' ||
    error?.message?.includes('401')
  );
};

/**
 * 处理API响应错误
 */
export const handleApiError = (error: any) => {
  console.error('API错误:', error);
  
  if (is401Error(error)) {
    console.log('🔒 检测到API 401错误');
    handle401Error();
    return true; // 表示已处理
  }
  
  return false; // 表示未处理，需要其他处理
};
